class Array{
    /*
    tag :
        AR_LONG 'A'     // array of longs
        AR_STR  'S'     // array of strings
    */
    Array(tag, name){
        this.name = name;
        this.tag = tag;
        this.len = 0;

        this.ca = GetArrayId(name);
        if(this.ca != -1){
            DeleteArray(this.ca);
        }
        this.ca = CreateArray(name);
    }

    ~Array(){
        DeleteArray(this.ca);
    }

    isEmpty(){
        if(this.len == 0){
            return 0;
        }
        return 1;
    }

    add(value){
        if(this.tag == AR_STR){
            SetArrayString(this.ca, this.len, value);
        } else {
            SetArrayLong(this.ca, this.len, value);
        }
        this.len = this.len + 1;
    }

    get(index){
        return GetArrayElement(this.tag, this.ca, index);
    }

    contain(value){
        auto i;
        for(i = 0; i < this.len; i = i + 1){
            if(this.tag == AR_STR && strstr(value, GetArrayElement(this.tag, this.ca, i)) != -1){
                return i;
            }

            if(this.tag == AR_LONG && value == GetArrayElement(this.tag, this.ca, i)){
                return i;
            }
        }
        return -1;
    }

    arrayEcho(){
        auto i;
        Message("array %s:  ", this.name);
        for(i = 0; i < this.len; i = i + 1){
            if(this.tag == AR_STR){
                Message("value: %s\n", GetArrayElement(this.tag, this.ca, i));
            }

            if(this.tag == AR_LONG){
                Message("value: %d\n", GetArrayElement(this.tag, this.ca, i));
            }
        }
        Message("\n");
    }
};